/**
 * 
 */
package com.mbengue.corp.apr.ra.dao;

import java.io.Serializable;

import org.hibernate.HibernateException;

/**
 * Classe generique de gestion de l'ajout, de la modification et de la suppression d'element 
 * de la base de donnees.
 * @author MMB11447
 *
 */
public interface AprDao<T, K> extends Serializable {

	/**
	 * Ajoute le nouvel objet dans la base de donnees
	 * 
	 * @param objet {@link T} a ajouter
	 * @throws HibernateException
	 */
	public void ajouter(T objet) throws HibernateException;
	
	/**
	 * Met a jour l'objet dans la base de donnees
	 * 
	 * @param objet {@link T} a mettre a jour
	 * @return {@link T} mis a jour
	 * @throws HibernateException
	 */
	public T modifier(T objet) throws HibernateException;
	
	/**
	 * Supprime l'objet de la base de donnees
	 * 
	 * @param objet {@link T} a supprimer
	 * @throws HibernateException
	 */
	public void supprimer(T objet) throws HibernateException;
	
	/**
	 * Retrouve l'objet dont l'identifiant est donne en entree
	 * 
	 * @param key {@link K} identifiant de l'objet a trouver
	 * @return {@link T}
	 * @throws HibernateException
	 */
	public T trouver(K key) throws HibernateException;
}
